MPP 1000C Modem/850 Emulator Page -1- -⇧Intro- MPP 1000C modem capable of autodial and autoanswer. This manual is meant to describe the installation, use, and technical aspects of the driver. Major things, such as error trapping and full 850 compatibility in the -⇧normal- everyday use that many Amodem users and BBS Sysops would use it, as well as HomePak buyers who own MPP modems, played a major part in the development of this driver. Thorough testing of this driver with Amodem 5.1, unmodified Amis and Forem, and most important of all, HomePak, by Russ Wetmore, to ensure full 850 compatibility has been taking place within the past 9 months. This driver was constructed by the MAC/65 cartridge for the Main and Smartmodem Source, and Basic XL for the Relocation Generator, to generate MAC/65 source code, thus taking up a maximum of 2.5K of code inside the machine, with the Smartmodem commands. This introduction would not be complete without the mentioning of the support and beta-testing help of my very good friends. First of all, Dave Lowry, Sysop of OTB BBS in Oakville, Ontario, (416) 844-2483, made sure that all of the functions of the driver worked, especially the custom XIO commands that were built into the driver. If it weren't for him, this driver wouldn't have gotten the testing it has already received. To this day, OTB BBS is still running with this version of the MPP driver (Without the Smartmodem commands). Secondly, and equally important, Peter Marshall, of The Martech Group, made sure that the Hayes SmartModem(tm) commands and XIO commands pertaining to the 850 all worked properly. He also ensured that the HomePak worked properly with the driver, which was our main goal. -⇧Booting up the Driver-elocatable, the booting stage of the driver is quite simple. All that must be done is to rename one of the modem drivers to AUTORUN.SYS and then boot up a DOS diskette with your new AUTORUN.SYS, that you renamed from the driver, and when the disk driver finishes whirring, your driver should be installed. As the driver is relocatable, it will place itself in the lowest area of memory without interfering with any terminal program. Those with the OSS Supercartridges will have an added advantage if they are using the part of DOS XL that puts itself into the Supercartridge, as they will save approximately 5K, thus enabling the driver to be in a lower part of the computer's memory. If there is no sign of the Driver, ie. You didn't hear a beep and see the Version number on the screen, then the driver wasn't renamed properly. After the driver is booted, you are then ready to use any Terminal or Bulletin Board System (BBS) program of your choice. MPP 1000C Modem/850 Emulator Page -2- -⇧General CIO Calls to the Driver-ral Calls, ie. OPEN, CLOSE, PRINT, INPUT, etc., without worrying too much about how the driver works on the inside. There are also specialized commands, called XIO Commands, that will be discussed in the next section, which communicate with the driver to get certain tasks done that the CIO is not truly capable of handling by itself, such as altering the Baud Rate. The OPEN command is very simple. All that need be done, is to remember the Basics of the OPEN Statment. In the OPEN command, you need remember, that for the mode of communication, ie. Input, OUtput or Both, a 5, 9, or 13 must be placed in the Aux1 byte for Input, OUtput, or Both, respectively. For true 850 compatibility, the Aux2 byte should be a zero. A value other than zero will give it characteristics, unique to the driver and, thus render it incompatible with the 850 interface. This is not a drawback, but an intention to make custom and compact terminal and BBS programs for the MPP modem. For the Aux2 byte, the following corresponds to the actions taken by the driver and the corresponding XIO statemants for you to look up for the meanings: +128 -- Hang up upon the CLOSE Statement (XIO 34,#chan,128,0,"R:") +64 -- Enter Autoanswer state (XIO 35,#chan,0,0,"R:") +32 -- No Translation (ATASCII) (XIO 38,#chan,32,0,"R:") +16 -- Dial Number Supplied (XIO 37,#chan,0,0,"R:555-1212") +8 -- Odd Parity (XIO 38,#chan,8,0,"R:") +4 -- Even Parity (XIO 38,#chan,4,0,"R:") +2 -- Echo Byte back to modem (XIO 38,#chan,2,0,"R:") +1 -- Half Duplex (XIO 38,#chan,1,0,"R:") desired functions in your application program, simply add up the corresponding bytes and the modem handler will take care of the rest. As an example, let's say that we want to dial a number in ATASCII and work in half-duplex: then we add 32 (ATASCII or NO translation)+16 (Dial)+1 (Half duplex) which comes to 49. Thus the statement would be OPEN #chan,13,49,"R:phonenumber" and that is all there is to it. Due to all of this flexibility, there are also limitations, such as setting the Dial and Answer bits simultaneously will report back with an error, as you can't dial and answer the phone at the same time. The other limitation is setting the echo & half duplex bits simultaneously. It won't report back with an error, but it will constantly juggle the same bytes from both buffers. The Get or Input statements function the same as if doing Gets or Inputs from any other channel. The are only two requirements. The first requirement is that the modem must be plugged in. The second one is that an XIO 40 must have been executed for its own internal reasons, not to mention that it is an Atari 850 standard. For more on this, see next section. The MPP 1000C Modem/850 Emulator Page -3- third requirement is that there must be a byte in the buffer within a given, user presettable time period. If any of these three requirements are not met, then an error results, depending on the requirement not met. The driver doesn't lock up and wait for you to plug in the modem. The only condition of a lockup is in the terminal program used, but -⇧not in the driver-so the same as any other Put or Print statements to the other channels. As with the Get/Input Statements, there are requirements to be met; however, only the first two requirements that were listed in the Get/Input commands are needed. The third requirement is not even seen by the Put/Print statments. The CLOSE command is also the same as Closing another device. The only twist here is that if you had specified the hang-up bit upon opening modem, then, when the channel is closed, the modem will hang up and empty all of the buffers. Otherwise, the close command will have no effect on the modem, but will disable the XIO 40, Dial, Answer, Half Duplex, Linefeeds and a few other things internal to the driver. -⇧Special Commands (XIO) to the CIO & Modem-sed to enable a certain characteristic, or execute a certain command in the driver. They are XIO commands because they have nothing to do with opening, closing, getting a status, or general I/O. To further explain the meaning of these Commands, we shall present them in order and explain what the commands do. -⇧XIO 34 -- Switch hook toggle:- Usage: XIO 34,#chan,aux1,aux2,"R:" Where chan is the IOCB that you are using with the modem. aux1 is one of the following numbers in order to have an effect on the driver. 128 - Hangs up the modem and clears the buffer off